package study_1;

/**
 * 线程的常用方法
 *      1.static Thread.currentThread() 返回当前线程。即当前代码的执行线程（对象）
 *      2.void run()                    用于实现线程的任务处理逻辑
 *      3.void start()                  启动相应线程
 *      4.void join()                   等待相应线程运行结束（在A线程中使用B线程的join方法，A线程会等待B线程运行结束，无论多久）
 *      5.static void yield()           使当前线程主动放弃其对处理器的占用，这可能导致当前线程被暂停（这种方法不可靠，该方法被调用时当前线程可能仍然被继续执行）
 *      6.static void sleep(long millis)
 */
public class Thread5 {
    public static void main(String[] args) {
        TestThread testThread = new TestThread();
        Thread thread = new Thread(testThread);
        Thread thread2 = new Thread(testThread);
        thread.start();
        thread2.start();
//        thread2.yield();
        try {
            thread2.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("-----------------------");
        System.out.println(Thread.currentThread());
        System.out.println("-----------------------");
    }

    static class TestThread implements Runnable{
        @Override
        public void run() {
            for (int i = 0; i < 100; i++) {
                try {
                    Thread.sleep(200);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread());
            }
        }
    }
}
